package com.eoekun.dashboard.model.enums;

import java.util.HashMap;
import java.util.Map;
import javax.validation.constraints.NotNull;

/**
 * 任务状态(0.评审,1.排期,2.开发,3.提测,4.测试,5.回归,6.验收,7.发布,8.上线,9.延期,10.挂起)
 * 
 * @author chenkun
 * @createTime 2019年11月22日 下午03:29:36
 */
public enum TaskStatusEnum {
    // @formatter:off
    /**
     * 0.评审
     */
    评审(0, "评审"),
    /**
     * 1.排期
     */
    排期(1, "排期"),
    /**
     * 2.开发
     */
    开发(2, "开发"),
    /**
     * 3.提测
     */
    提测(3, "提测"),
    /**
     * 4.测试
     */
    测试(4, "测试"),
    /**
     * 5.回归
     */
    回归(5, "回归"),
    /**
     * 6.验收
     */
    验收(6, "验收"),
    /**
     * 7.发布
     */
    发布(7, "发布"),
    /**
     * 8.上线
     */
    上线(8, "上线"),
    /**
     * 9.延期
     */
    延期(9, "延期"),
    /**
     * 10.挂起
     */
    挂起(10, "挂起"),
    ;
    // @formatter:on
    private Integer value;
    private String text;

    private TaskStatusEnum(Integer value, String text) {
        this.value = value;
        this.text = text;
    }

    /**
     * 
     * @param value
     * @return 若为空,则返回空字符串
     * @author chenkun
     * @createTime 2019年11月22日 下午03:29:36
     */
    public static String getText(Integer value) {
        for (TaskStatusEnum enmm : TaskStatusEnum.values()) {
            if (enmm.getValue().equals(value)) {
                return enmm.getText();
            }
        }
        return "";
    }

    /**
     * 
     * @param text
     * @return Integer 若不存在,则返回null
     * @author chenkun
     * @createTime 2019年11月22日 下午03:29:36
     */
    public static Integer getValue(String text) {
        for (TaskStatusEnum enmm : TaskStatusEnum.values()) {
            if (enmm.getText().equals(text)) {
                return enmm.getValue();
            }
        }
        return null;
    }

    public static TaskStatusEnum getEnumByValue(Integer value) {
        for (TaskStatusEnum enmm : TaskStatusEnum.values()) {
            if (enmm.getValue().equals(value)) {
                return enmm;
            }
        }
        return null;
    }

    public static TaskStatusEnum getEnumByText(String text) {
        for (TaskStatusEnum enmm : TaskStatusEnum.values()) {
            if (enmm.getText().equals(text)) {
                return enmm;
            }
        }
        return null;
    }

    public static @NotNull Map<Integer, String> toMap() {
        Map<Integer, String> map = new HashMap<>();
        for (TaskStatusEnum enmm : TaskStatusEnum.values()) {
            map.put(enmm.value, enmm.text);
        }
        return map;
    }

    public Integer getValue() {
        return value;
    }

    public String getText() {
        return text;
    }

}
